package org.example.functionInterface;

import java.util.function.Predicate;

public class Demo12Predicate {
    public static void main(String[] args) {
        //与and的“与”类似，默认方法or实现逻辑关系中的“或”。
        String str = "Helloworld";        //1.练习:判断一个字符串包含大写“H”或者包含大写“W”        //lambda标准格式
        fun(str, (String s) -> {
            return s.contains("H");
        }, (String s) -> {
            return s.contains("W");
        });
        System.out.println("------------");
        fun2(str, (String s) -> {
            return s.contains("H");
        }, (String s) -> {
            return s.contains("W");
        });
    }

    /*        演示or方法        需要两个Predicate作为参数        fun1方法没有使用or方法,就是p1和p2分别调用test方法,
    然后把结果进行||运算--其实这是or方法的底层实现     */
    public static void fun(String s, Predicate<String> p1, Predicate<String> p2) {
        //先判断一次
        boolean result1 = p1.test(s);
        //再判断一次
        boolean result2 = p2.test(s);
        //进行||运算
        boolean result = result1 || result2;
        System.out.println(result);
    }

    /*        演示or方法        需要两个Predicate作为参数             */
    public static void fun2(String s, Predicate<String> p1, Predicate<String> p2) {
        boolean result = p1.or(p2).test(s);
        System.out.println(result);
    }
}